package com.huixi.service.impl;


import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.huixi.common.pojo.EasyUIDataGridResult;
import com.huixi.entity.Item;
import com.huixi.entity.ItemDesc;
import com.huixi.service.ItemService;
import com.huixi.service.mapper.ItemDescMapper;
import com.huixi.service.mapper.ItemMapper;
import com.huixi.utils.IDUtils;
import com.huixi.utils.JsonResult;

/**
 * <p>
 * 商品表 服务实现类
 * </p>
 *
 * @author auto generator
 * @since 2019-05-27
 */
@Service("itemService")
public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements ItemService {

	@Autowired
	private ItemMapper itemMapper;
	
	@Autowired
	private ItemDescMapper itemDescMapper;
	
	@Override
	public Item getItemById(long itemId) {
		// 查询缓存
		// 没有查询数据库
		// 根据主键查询
		Item item = itemMapper.selectById(itemId);
		return item;
	}

	@Override
	public EasyUIDataGridResult getItemList(int page, int rows) {
		// 设置分页信息
		PageHelper.startPage(page, rows);
		// 执行查询
		QueryWrapper<Item> item = new QueryWrapper<Item>();
		List<Item> list = itemMapper.selectList(item);
		// 创建一个返回对象
		EasyUIDataGridResult result = new EasyUIDataGridResult();
		result.setRows(list);
		// 取分页结果
		PageInfo<Item> pageInfo = new PageInfo<Item>(list);
		long total = pageInfo.getTotal();
		result.setTotal(total);
		return result;
	}

	@Override
	public JsonResult addItem(Item item, String desc) {
		// 生成商品id
		final long itemId = IDUtils.genItemId();
		// 补全item的属性
		item.setId(itemId);
		// 1-正常 2-删除 3-下架
		item.setStatus(1);
		item.setCreated(new Date());
		item.setUpdated(new Date());
		// 向商品表插入数据
		itemMapper.insert(item);
		// 创建一个商品表述表对应的pojo对象
		ItemDesc itemDesc = new ItemDesc(); 
		// 补全属性
		itemDesc.setItemId(itemId);
		itemDesc.setItemDesc(desc);
		itemDesc.setCreated(new Date());
		itemDesc.setUpdated(new Date());
		// 向商品描述表插入数据
		itemDescMapper.insert(itemDesc);
		//发送商品添加消息 (未完成事务，消息已发送。事务提交处理)
		
		// 返回成功
		return JsonResult.ok();
	}

	@Override
	public ItemDesc getItemDescById(long itemId) {
		ItemDesc itemDesc = itemDescMapper.selectById(itemId);
		return itemDesc;
	}
}
